home *** CD-ROM | disk | FTP | other *** search
/ Mac Format 1994 October / Macformat17.cdr / Shareware City / Developers / shutdown-fx-20-c / sfx init ƒ / code ƒ / sfx gestalt.c < prev    next >
Text File  |  1994-07-11  |  4KB  |  133 lines

  1. /**********************************************************************\
  2.  
  3. File:        sfx gestalt.c
  4.  
  5. Purpose:    This module handles our gestalt selector function for
  6.             setting & getting the addresses of our fade procedure,
  7.             shutdown proc, and restart proc.
  8.  
  9. This program is free software; you can redistribute it and/or modify
  10. it under the terms of the GNU General Public License as published by
  11. the Free Software Foundation; either version 2 of the License, or
  12. (at your option) any later version.
  13.  
  14. This program is distributed in the hope that it will be useful,
  15. but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17. GNU General Public License for more details.
  18.  
  19. You should have received a copy of the GNU General Public License
  20. along with this program in a file named "GNU General Public License".
  21. If not, write to the Free Software Foundation, 675 Mass Ave,
  22. Cambridge, MA 02139, USA.
  23.  
  24. \**********************************************************************/
  25.  
  26. #include "GestaltEQU.h"
  27. #include "sfx gestalt equ.h"
  28. #include "sfx gestalt.h"
  29. #include "program globals.h"
  30.  
  31. short MakeNewGestaltSelectors(void)
  32. {
  33.     Handle            theProcHandle;
  34.     Ptr                theGestaltFunction;
  35.     unsigned long    theSize;
  36.     OSErr            gestaltError;
  37.     
  38.     theProcHandle=Get1Resource('PROC', 11);        /* get gestalt selector function */
  39.     if ((ResError()!=noErr) || (theProcHandle==0L))
  40.         return kCantGetProc11Resource;
  41.     
  42.     theGestaltFunction=NewPtrSys(theSize=GetHandleSize(theProcHandle));
  43.     if (theGestaltFunction==0L)
  44.         return kNoMemoryInSystemHeap;
  45.     
  46.     BlockMove(*theProcHandle, theGestaltFunction, theSize);
  47.     ReleaseResource(theProcHandle);
  48.     theProcHandle=0L;
  49.     
  50.     gestaltError=NewGestalt(sfxGetVersion, theGestaltFunction);
  51.     if (gestaltError!=noErr)
  52.         return kCantMakeNewGestalt;
  53.     
  54.     gestaltError=NewGestalt(sfxGetFadeProcPtr, theGestaltFunction);
  55.     if (gestaltError!=noErr)
  56.         return kCantMakeNewGestalt;
  57.     
  58.     gestaltError=NewGestalt(sfxGetShutdownProcPtr, theGestaltFunction);
  59.     if (gestaltError!=noErr)
  60.         return kCantMakeNewGestalt;
  61.  
  62.     gestaltError=NewGestalt(sfxGetRestartProcPtr, theGestaltFunction);
  63.     if (gestaltError!=noErr)
  64.         return kCantMakeNewGestalt;
  65.     
  66.     gestaltError=NewGestalt(sfxGetFadeProcPtrAddress, theGestaltFunction);
  67.     if (gestaltError!=noErr)
  68.         return kCantMakeNewGestalt;
  69.  
  70.     gestaltError=NewGestalt(sfxGetShutdownProcPtrAddress, theGestaltFunction);
  71.     if (gestaltError!=noErr)
  72.         return kCantMakeNewGestalt;
  73.     
  74.     gestaltError=NewGestalt(sfxGetRestartProcPtrAddress, theGestaltFunction);
  75.     if (gestaltError!=noErr)
  76.         return kCantMakeNewGestalt;
  77.     
  78.     return allsWell;
  79. }
  80.  
  81. short SetGestaltProcPtrs(ProcPtr fadeProcPtr, ProcPtr shutdownProcPtr,
  82.     ProcPtr restartProcPtr)
  83. {
  84.     OSErr            gestaltError;
  85.     long            theAddress;
  86.     
  87.     gestaltError=Gestalt(sfxGetFadeProcPtrAddress, &theAddress);
  88.     if (gestaltError!=noErr)
  89.         return kGestaltImproperlyInstalled;
  90.     *((ProcPtr*)theAddress)=fadeProcPtr;
  91.     
  92.     gestaltError=Gestalt(sfxGetShutdownProcPtrAddress, &theAddress);
  93.     if (gestaltError!=noErr)
  94.         return kGestaltImproperlyInstalled;
  95.     *((ProcPtr*)theAddress)=shutdownProcPtr;
  96.     
  97.     gestaltError=Gestalt(sfxGetRestartProcPtrAddress, &theAddress);
  98.     if (gestaltError!=noErr)
  99.         return kGestaltImproperlyInstalled;
  100.     *((ProcPtr*)theAddress)=restartProcPtr;
  101.     
  102.     return allsWell;
  103. }
  104.  
  105. short GetGestaltProcPtrs(ProcPtr *fadeProcPtr, ProcPtr *shutdownProcPtr,
  106.     ProcPtr *restartProcPtr)
  107. {
  108.     OSErr            gestaltError;
  109.     
  110.     gestaltError=Gestalt(sfxGetFadeProcPtr, fadeProcPtr);
  111.     if (gestaltError!=noErr)
  112.         return kGestaltImproperlyInstalled;
  113.     
  114.     gestaltError=Gestalt(sfxGetShutdownProcPtr, shutdownProcPtr);
  115.     if (gestaltError!=noErr)
  116.         return kGestaltImproperlyInstalled;
  117.     
  118.     gestaltError=Gestalt(sfxGetRestartProcPtr, restartProcPtr);
  119.     if (gestaltError!=noErr)
  120.         return kGestaltImproperlyInstalled;
  121.     
  122.     return allsWell;
  123. }
  124.  
  125. Boolean sfxGestaltFunctionInstalledQQ(void)
  126. {
  127.     long            theVersion;
  128.     OSErr            gestaltError;
  129.     
  130.     gestaltError=Gestalt(sfxGetVersion, &theVersion);
  131.     return ((gestaltError==noErr) && (theVersion==1L));
  132. }
  133.